# coding: utf-8
#Lists are used to store multiple items in a single variable.
lista = ["apple", "banana", "cherry"]
listb = ["pear","kiwi","watermelon"]
print(lista, listb)
lista.append(listb[0])
print(lista)
input()
# for loop
for x in lista:
print(x)
listb.append(x)
print(listb)
input()
# for loop
i = -1
print(listb)
for x in listb:
i += 1
if x == "pear" and i > 0 :
listb[i] = "coconut"
print(listb)
#文字列のsplitからリストへ
address = "熊本県 阿蘇郡 南阿蘇村 河陽 4518"
adrlist = address.split(' ')
print(adrlist)
phone = "0967-65-8021"
phonelist = phone.split('-')
print(phonelist)
import copy
import os
os.system("clear")
#元データ
lista = [0, 1, [2, 3]]
#print(lista[0],lista[1],lista[2],lista[2][0],lista[2][1])
listb = lista # assignment代入
listc = lista.copy() # shallow copy
listd = copy.deepcopy(lista) # deep copy
print(lista,listb,listc,listd)
# [0, 1, [2, 3]]
lista[1] = 100
lista[2][0] = 200
print(lista,listb,listc,listd)
a = ["apple","banana","kiwi","orange"]
b = a
c = a.copy()
d = copy.deepcopy(a)
print(a,b,c,d)
a[1] = "バナナ"
print(a,b,c,d)
#リスト内包表記
base = [1,2,3,4]
new = [i*2 for i in base]
print(new)
#リスト要素の削除clear, pop, remove, del
#2種類のリスト:①棚stack FILO First In Last Out
#FCLS First Come Last service
import random
stack =[]
for i in range(10):
stack.append(random.randint(2,50))
print(stack)
result = 0
for i in range(10):
result += stack.pop()
print(f'総和={result}')
print(stack)
#②待ち行列QUEUE:FIFO First In First Out
#FCFS First Come First service
queue = []
for i in range(10):
name = input("お名前は: ")
queue.append(name)
print(queue)
for i in range(10):
call = queue.pop(0)
print(call)
#
#リスト要素の削除clear, pop, remove, del
#使い方一覧
#すべての要素を削除: clear()
l = [0, 1, 2]
l.clear()
print(l)
# []
#指定した位置の要素を削除し、値を取得: pop()
l = [0, 10, 20, 30, 40, 50]
popped_item = l.pop(0)
print(popped_item)
# 0
print(l)
# [10, 20, 30, 40, 50]
popped_item = l.pop(3)
print(popped_item)
# 40
print(l)
# [10, 20, 30, 50]
popped_item = l.pop(-2)
print(popped_item)
# 30
print(l)
# [10, 20, 50]
popped_item = l.pop()
print(popped_item)
# 50
print(l)
# [10, 20]
#指定した値と同じ要素を検索し、最初の要素を削除: remove()
l = ['Alice', 'Bob', 'Charlie', 'Bob', 'Dave']
l.remove('Alice')
print(l)
# ['Bob', 'Charlie', 'Bob', 'Dave']
#インデックス・スライスで位置・範囲を指定して削除: del
l = [0, 10, 20, 30, 40, 50]
del l[0]
print(l)
# [10, 20, 30, 40, 50]
del l[3]
print(l)
# [10, 20, 30, 50]
del l[-1]
print(l)
# [10, 20, 30]
del l[-2]
print(l)
# [10, 30]
#スライスで範囲を指定すると、複数の要素を一括で削除できる。
l = [0, 10, 20, 30, 40, 50]
del l[2:5]
print(l)
# [0, 10, 50]
l = [0, 10, 20, 30, 40, 50]
del l[:3]
print(l)
# [30, 40, 50]
l = [0, 10, 20, 30, 40, 50]
del l[-2:]
print(l)
# [0, 10, 20, 30]
#全範囲を指定してすべての要素を削除する
l = [0, 10, 20, 30, 40, 50]
del l[:]
print(l)
# []
#スライスでの範囲指定を[start:stop:step]として増分stepを指定すると、飛び飛びの複数の要素を一括で削除できる。
l = [0, 10, 20, 30, 40, 50]
del l[::2]
print(l)
# [10, 30, 50]
#条件を満たす複数の要素を一括で削除: リスト内包表記
l = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
evens = [i for i in l if i % 2 == 0]
print(evens)
# [0, 2, 4, 6, 8]
odds = [i for i in l if i % 2 != 0]
print(odds)
# [1, 3, 5, 7, 9]
print(l)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
l = ['Alice', 'Bob', 'Charlie', 'Bob', 'David']
print(l)
# ['Alice', 'Bob', 'Charlie', 'Bob', 'David']
print([s for s in l if s != 'Bob'])
# ['Alice', 'Charlie', 'David']
print([s for s in l if s.endswith('e')])
# ['Alice', 'Charlie']
print(list(set(l)))
# ['Alice', 'Charlie', 'David', 'Bob']